Video on demand services are becoming more common. While in the past, customers may have been satisfied with a relatively small number, e.g., a few hundred, programs, e.g., TV, movie and/or audio programs, to choose from, user's expectations with regard to being able to select from large numbers, e.g., thousands of titles, are ever increasing. User expectation with regard to access to ever greater numbers of programs is further complicated by increasing user expectations with regard to prompt access to selected content. While in the past customers were often willing to wait hours or even days for an obscure program to be available, customers are seeking and expecting relatively prompt access to selected content and expect such prompt access whether or not a program is in high demand by the public.
While the cost of storage continues to decrease, it remains impractical to store all possible programs which a user might request in a local cache. For this reason, some systems rely on local storage of programs which are in high demand while local content with programs which are in lower demand being stored in remote storage sites, e.g., remote caches, from which content can be requested in the event that the content is not locally available for delivery to a user.
In the case of content obtained from a remote cache, many systems wait for the full program content to be locally stored and then make the content available to the user from the local store. In such systems, since the content does not begin being supplied, e.g., streamed, to the user device until the program is stored at the local storage site, e.g., local cache, by the time the content begins being streamed a full copy of the requested program is locally available and there is no need for the streaming device to seek further content from the remote device, e.g., to satisfy a fast forward or other trick play request that might be issued while the requested program content is being streamed to the user.
While loading a complete copy of a requested program into a local cache prior to the start of content delivery to the user device avoids the risk of being unable to respond to a trick play command in a prompt fashion, it involves a delay corresponding to the amount of time needed to transfer the entire program from the remote cache where it is available to the local cache. Assuming a data transfer rate for the program between the remote and local cache corresponding to the data rate at which the program is streamed to the user, the requesting user would have to wait an amount of time corresponding to the full duration of the program before a requested program would be available for streaming from the local cache.
Using a much higher data transfer rate between the remote cache node and the local cache node can reduce the time required to transfer the program content. However, higher data rate communications links are often more costly than lower data rate links. Furthermore, even at transfer rates of 10 or 20 times the data rate used to stream content to the end user, the delay before a lengthy program may be fully transferred from a remote cache to a local cache from which it can be delivered to an end user can be considerable.
If trick play support for fast forwarding and other trick play commands which might require accessing a portion of a program not already present in a local cache were not supported, a system could begin streaming content from a local cache before the full program was stored in the local cache. However, the failure to support trick play commands is considered unsatisfactory to some users and supporting trick play commands for some programs, e.g., those which are stored locally, but not others, e.g., those which are being obtained from a remote cache, is highly confusing to users.
In view of the above discussion, it should be appreciated that there is a need for methods and apparatus which allow content to be obtained from a remote source, e.g., remote cache and begin being streamed to a user prior to the full program being stored locally while still supporting trick play commands such as fast forward. It is desirable that the method and apparatus allow content to be obtained from the remote cache for delivery to a user device at a rate which is equal to or not much higher than the rate at which content is streamed to the user device. It is also desirable if, in at least some embodiments, data communications links between remote caches and local caches from which data may be obtained for streaming are used efficiently, e.g., without multiple copies of the same data being transmitted multiple time.